// 获取最大岛屿面积

// 对之前的深度优先搜索（DFS）算法稍作修改。
// 在每次遇到陆地时，调用 DFS 函数计算该岛屿的面积，
// 同时在遍历过程中记录下最大的岛屿面积。


function numIslands(grid) {
  if (!grid || grid.length === 0) return 0;

  const rows = grid.length;
  const cols = grid[0].length;
  let maxArea = 0;

  // DFS 淹没当前岛屿
  function dfs(i, j) {
    // 边界检查 + 是否为陆地检查
    if (i < 0 || i >= rows || j < 0 || j >= cols || grid[i][j] !== '1') return;

    grid[i][j] = '0'; // 淹没当前陆地
    let area = 1;

    // 递归淹没四个方向的相邻陆地
    area += dfs(i + 1, j); // 下
    area += dfs(i - 1, j); // 上
    area += dfs(i, j + 1); // 右
    area += dfs(i, j - 1); // 左

    return area
  };

  // 遍历整个网格
  for (let i = 0; i < rows; i++) {
    for (let j = 0; j < cols; j++) {
      if (grid[i][j] === '1') {
        let currArea = dfs(i, j)
        maxArea = Math.max(maxArea, currArea)
      }
    }
  }

  return maxArea;
}